package com.ruoyi.eqmonitor.dispose.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.eqmonitor.dispose.domain.ExteriorSiteMonitorData;
import com.ruoyi.eqmonitor.dispose.dtos.SiteMonitorDataDto;
import com.ruoyi.eqmonitor.dispose.dtos.SiteMonitorDataGetAllDto;
import com.ruoyi.eqmonitor.dispose.dtos.StatementVo;
import com.ruoyi.eqmonitor.dispose.dtos.WaterQualityMergeDetailsVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 外部接口-微站站点实时数据 持久化
 */
public interface ExteriorSiteMonitorDataServiceMapper extends BaseMapper<ExteriorSiteMonitorData> {

    List<ExteriorSiteMonitorData> getInfo(@Param("siteName") List<String> siteName,
                                          @Param("year") int year,
                                          @Param("month") int month,
                                          @Param("day") int day,
                                          @Param("week") int week,
                                          @Param("timeCode") int timeCode);

    /**
     * 取数据库中指定站点最新的小时数据 查询出当前小时的所有监测数据
     */
    List<ExteriorSiteMonitorData> lastData(@Param("siteCode") String siteCode);

    /**
     * 查询所有微站最新的数据
     */
    List<ExteriorSiteMonitorData> lastListData(@Param("siteName") String siteName);

    List<SiteMonitorDataGetAllDto> getAll(@Param("siteName") List<String> siteName,
                                          @Param("areaName") String areaName,
                                          @Param("beginTime") String beginTime,
                                          @Param("endTime") String endTime);

    List<SiteMonitorDataGetAllDto> getWaterQuality(SiteMonitorDataDto dto);

    List<StatementVo> getStatement(@Param("dto") SiteMonitorDataDto dto);

    List<SiteMonitorDataGetAllDto> getHistory(@Param("siteName") String siteName,
                                              @Param("state") Integer state,
                                              @Param("dataTime") String dataTime);

    List<WaterQualityMergeDetailsVO> getWaterQualityMerge(@Param("siteName") List<String> siteName,
                                                          @Param("areaName") String areaName,
                                                          @Param("beginTime") String beginTime,
                                                          @Param("endTime") String endTime,
                                                          @Param("state") int state);

    List<WaterQualityMergeDetailsVO> report(@Param("areaName") String areaName,
           @Param("beginTime") String beginTime,
           @Param("endTime") String endTime);
}
